/**
 * 修复导入问题的脚本
 * 用于解决开发服务器模块缓存导致的导入错误
 */

const fs = require('node:fs')
const path = require('node:path')

// 需要检查的API文件
const apiFiles = [
  'src/api/user.ts',
  'src/api/punch.ts',
  'src/api/reading-records.ts',
  'src/api/book.ts',
]

// 检查并修复导出
function fixExports() {
  console.log('🔧 开始修复导入问题...')

  apiFiles.forEach((filePath) => {
    const fullPath = path.join(__dirname, '..', filePath)

    if (fs.existsSync(fullPath)) {
      console.log(`✅ 检查文件: ${filePath}`)

      // 读取文件内容
      let content = fs.readFileSync(fullPath, 'utf8')

      // 检查是否已经有重新导出
      if (!content.includes('// 重新导出函数')) {
        console.log(`📝 添加重新导出到: ${filePath}`)

        // 提取所有导出的函数名
        const exportMatches = content.match(/export function (\w+)/g)
        if (exportMatches) {
          const functionNames = exportMatches.map(match =>
            match.replace('export function ', '').trim(),
          )

          // 添加重新导出
          const reExport = `\n// 重新导出函数（解决构建缓存问题）\nexport { ${functionNames.join(', ')} }\n`
          content += reExport

          // 写回文件
          fs.writeFileSync(fullPath, content, 'utf8')
          console.log(`✨ 已更新: ${filePath}`)
        }
      }
      else {
        console.log(`⏭️  跳过（已处理）: ${filePath}`)
      }
    }
    else {
      console.log(`❌ 文件不存在: ${filePath}`)
    }
  })

  console.log('🎉 修复完成！请重启开发服务器。')
}

// 清理缓存的函数
function clearCache() {
  console.log('🧹 清理缓存...')

  const cacheDirectories = [
    'node_modules/.cache',
    '.nuxt',
    'dist',
    'unpackage',
  ]

  cacheDirectories.forEach((dir) => {
    const fullPath = path.join(__dirname, '..', dir)
    if (fs.existsSync(fullPath)) {
      console.log(`🗑️  删除缓存目录: ${dir}`)
      fs.rmSync(fullPath, { recursive: true, force: true })
    }
  })

  console.log('✨ 缓存清理完成！')
}

// 主函数
function main() {
  const args = process.argv.slice(2)

  if (args.includes('--clear-cache')) {
    clearCache()
  }

  fixExports()

  console.log('\n📋 建议的下一步操作：')
  console.log('1. 重启开发服务器 (npm run dev)')
  console.log('2. 如果问题仍然存在，运行: node scripts/fix-imports.js --clear-cache')
  console.log('3. 检查浏览器控制台是否有其他错误')
}

if (require.main === module) {
  main()
}

module.exports = { fixExports, clearCache }
